A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
1. Technical Field
The present invention relates to the fields of object-oriented programming and user interfaces for computers.
2. Background Art: Object-oriented Programming
Object-oriented programming structures are typically characterized by five features: objects, classes, inheritance, methods, and messages. Objects are typically a combination of the conventional programming notions of data and procedures. Objects that respond in the same way to the same messages are described at once by describing characteristics of a "class." Individual objects in a class having specific and unique data or procedures are referred to as "instances" of that class. The primary advantage of object-oriented programming is that new objects or classes ("descendants") can be created from existing objects or classes ("ancestors"), by merely referencing or "inheriting" desired behaviors from objects that already exhibit those behaviors without rewriting the objects completely. This gives rise to a hierachical inheritance structure wherein the parent class or classes in direct inheritance links are referred to as "immediate ancestors," the inheriting class referred to as the "immediate descendant." Procedures, referred to as "methods", govern the behavior and functionality of an object. Objects may contain their own references to methods, or they may inherit methods from their ancestors. Methods associated with an object in either way are invoked in response to named messages sent to that object. For a general discussion of object-oriented programming and the terminology see Object-Oriented Programming for the Macintosh, Kurt J. Schmucker, Hayden Book Company, 1986 and Object-Oriented Programming: Themes and Variations, Mark Stefik and Daniel G. Bobrow, Al Magazine, 6(4): 40-62, 1986.
3. Background Art: User Interfaces for Computers
Computer interfaces must perform a number of important tasks. First, they must provide a means for inspecting data. Second, they must provide a means for selecting data that is to be operated on. Finally, they must provide a method for choosing a command to operate on the selected data. Commands are typically chosen from lists of commands called menus and can often be classified into one of two types. Many commands result in immediate action, in which case they might be verbs or verb phrases (such as "delete"). Other commands specify an attribute of an object or set a value (such as the font for new text), in which case they may be nouns. However, sometimes it is desirable for the menu to display information and it is desirable to leave the menu displayed on the screen. At other times it may be desirable for the menu to disappear as soon as a choice is made. Further, the preferred position of a menu may differ from menu to menu, and some menus may permit the choice of multiple entries, while some may contain mutually exclusive selections. Because of the great variety of data types and commands used in applications no one menu meets the demands for every usage. There have been a large number of different types of menus developed to best meet these different objectives with differing degrees of success.
For example, menus in the Macintosh interface are discussed at pages 51-61 of Inside Macintosh, Volumes I, II, and III, Addison-Wesley Publishing Company, Inc., 1985. In the highly standardized Macintosh "pull-down" menu interface, the menus are not visible until they are chosen from the horizontal menu bar permanently displayed across the top of the screen. To choose a command, the user positions the pointer over the desired menu title and presses the mouse to highlight the title and display the menu. While holding down the mouse button, the user moves the pointer down the menu. As the pointer moves to each command, the command is highlighted. The command that is highlighted when the user releases the mouse button is chosen. As soon as the mouse button is released, the command blinks briefly, the menu disappears, and the command is executed. Macintosh menus have the advantage of being standardized so that once they have been learned, other applications using the same interface are easy to use. Further, they are very efficient in the use of display area. However, the fact that menus are displayed only when chosen and disappear as soon as a command is executed is undesirable when multiple entries are to be selected from a single menu. Further, the display of Macintosh menus requires the dedicated use of the mouse, which may be inconsistent with the users desire to use the mouse to edit or select other data while he is viewing a list of command choices that he has made. Further still, the pull down menu required extensive use of the mouse and numerous steps to be executed in order to select a menu option. Finally, Macintosh menus typically "pull-down" in a fixed position that covers the data window, unless the data window is moved. Thus, even though the Macintosh interface is highly standardized, is easy to learn, and uses display area efficiently, it has a number of disadvantages which result in its not being the preferred interface for many applications. This is especially the case in applications which execute on systems having larger displays where screen area is not at a high premium, or where more speed is desired in the selection of menu items.
Interactive graphics have been used in computer interfaces for some time. See for example, A Conceptual Framework for the Augmentation of Man's Intellect, Doug Engelbart, Vistas in Information Handling, edited by Howerton and Weeks, Spartan Books, Washington D.C. 1963. Interactive graphics was integrated into the Lisp environment in Interlisp, a programming language which began with an implementation of the Lisp programming language for the PDP-1 at Bolt, Beranek and Newman in 1966 and was later developed at Xerox Palo Alto Research Center ("PARC"). See Interlisp Reference Manual, Xerox Corporation, 1983. However the menu package available with Interlisp supported only a limited variety of menus, and did not provide for the easy modification of these menus. It did not support menus that had the capability of selecting multiple items from a single menu, did not provide any visual clue as to items selected, and menus could not be attached to a window so that they followed the window when the window was moved.
Thus, it is desirable to provide a menu package that permits the construction of a broad variety of different menu types to meet different needs, minimizes the amount of code that needs to be written to develop new menus, and standardizes the varying menus to the extent possible.